package com.gec.dao;

import com.gec.entity.Book;
import com.gec.util.DBUtil;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * 专门查询操作book客房表的 数据库访问层
 */
public class BookDao2 extends DBUtil<Book> {

    /**
     * 重写getEntity方法 主要是写解析查询返回的图书数据的
     * @param rs
     * @return
     * @throws Exception
     */
    @Override
    public Book getEntity(ResultSet rs) throws Exception {
        Book book = new Book();
        //将查询结果集ResultSet  实际上就相当于 数据库的查询结果
        //我们要把结果集里面的数据取出来
        book.setId(rs.getInt("id"));
        book.setName(rs.getString("name"));
        book.setAuthor(rs.getString("author"));
        book.setPrice(rs.getString("price"));
        return book;
    }

    /**
     * 查询所有客房的方法
     * @return
     */
    public List<Book> getBooks(){
        //需要执行的sql语句
        String sql = "select * from custom";
        //创建能够执行查询客房表的客房表访问层对象
        BookDao2 bookDao = new BookDao2();
        //传入要执行的sql语句
        List<Book> query = bookDao.query(sql);
        //将查询出来的客房显示到控制台
        for (Book book : query) {
            System.out.println(book);
        }
        return query;
    }

    /**
     * 根据图书编号查询图书信息的方法
     * @param id
     * @return
     */
    public Book getBookById(String id){
        String sql = "select * from custom where id = ?";
        //创建BookDao对象 来执行sql语句
        BookDao bookDao = new BookDao();
        List<Book> query = bookDao.query(sql, id);
        //因为id作为主键具有惟一性 就只取第一个结果就好了
        return query.get(0);
    }


    /**
     * 修改客房的方法
     * @param book
     */
    public void updateBook(Book book){
        BookDao bookDao = new BookDao();
        //sql语句
        String sql = "update book set name=?,author=?,price = ? where id =?";
        //存放参数的对象
        ArrayList<Object> list = new ArrayList<>();
        //按照？的顺序把参数放进去
        list.add(book.getName());
        list.add(book.getAuthor());
        list.add(book.getPrice());
        list.add(book.getId());
        //执行sql语句
        bookDao.update(sql,list);
    }

    public void deleteBook(String id) {
        BookDao2 bookDao = new BookDao2();
        String sql = "delete  from custom where id = ?";
        ArrayList<Object> objects = new ArrayList<>();
        objects.add(id);
        bookDao.update(sql,objects);
    }
}
